/*
Automatic clinic tests using a robot arm.
Copyright (C) 2010  CIC-CPC, CHU Gabriel Montpied
All other trademarks, logos and copyrights are the property
of their respective owners.

This file is part of cpc-painbot.

cpc-painbot is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

cpc-painbot is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with cpc-painbot.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef AXOM4013_H
#define AXOM4013_H

#include "capteur.h"

namespace capteur {

/*! Capteur de distance Axom 4013.
    Ce télémètre laser permet la mesure d'une distance comprise entre 30mm et 130mm.
    La donnée est alors transmise sur une sortie 0V - 10V représentant la valeur acquise par
    le capteur.
    L'appareil dispose d'un temps de réponse de 10ms. Sa résolution est de 0.06mm,
    sa linéarité de +/-0,2mm.
*/
class Axom4013 : public Capteur
{
Q_OBJECT
public:
    //! Résolution (mm).
    static const qreal resolution = 0.06;

    //! Linéarité (mm).
    static const qreal linearite = 0.2;

    //! Limites de mesure (mm)
    enum Limites {
        DistanceMin = 30,  //!< Distance minimale
        DistanceMax = 130, //!< Distance maximale
        IntervalleDistance = DistanceMax - DistanceMin //!< Intervalle de mesure.
    };

    //! Sortie en tension (Volt)
    enum Sortie {
        SortieMin = 0,  //!< Valeur minimale
        SortieMax = 10, //!< Valeur maximale
        IntervalleSortie = SortieMax - SortieMin //!< Intervalle de sortie.
    };

    //! Constructeur.
    explicit Axom4013(QObject *parent = 0);

protected:
    /*! Acquiert la mesure.
        Acquiert la mesure au travers de l'indicateur de process.
        \see Capteur::acquerir()
    */
    virtual void acquerir(const IndicateurProcess *indicateur, const QVariant &mesure);
};

} // namespace capteur

#endif // AXOM4013_H
